<template>
    <div class="shopcart-container">
        <div class="goods-list">
            <!--商品列表区域-->
            <div class="mui-card" v-for="(item, i) in bookList" :key="item.id">
                <!--循环购物车中的物品-->
                <div class="mui-card-content">
                    <div class="mui-card-content-inner">
                        <mt-switch
                            v-model="$store.getters.getCartSelected[item.id]"
                            @change="selectedChanged(item.id, $store.getters.getCartSelected[item.id])"
                            >

                        </mt-switch>
                        <img :src="item.thumbnail" />
                        <div class="info">
                            <h1>{{ item.title }}</h1>
                            <p>
                                <span class="price">￥{{ item.sellPrice }}</span>
                                <numbox :value="$store.getters.getGoodsCount[item.id]" :id="item.id"></numbox>
                                <a href="#" @click.prevent="remove(item.id, i)">删除</a>
                            </p>
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <!--结算区域-->
        <div class="mui-card">
            <div class="mui-card-content">
                <div class="mui-card-content-inner jiesuan">
                    <div class="left">
                        <p>总计(不含运费)</p>
                        <p>
                            已勾选商品
                            <span class="red">{{ $store.getters.getCartCountAndAmount.count }}</span>件，总价
                            <span class="red">￥{{ $store.getters.getCartCountAndAmount.amount }}</span>
                        </p>
                    </div>
                    <mt-button type="danger">去结算</mt-button>
                </div>
            </div>
        </div>
    </div>

</template>

<script>
import numbox from "../CartNumbox.vue";
export default {
    name: "ShopCartContainer",
    components: {
        numbox,
    },
    data() {
        return {
            selectedCount: '',
            // 购物车中所有图书
            bookList: [],
        }
    },
    created() {
        this.getBooksList();
    },
    methods: {
        // 加载购物车图书列表
        getBooksList() {
            // 获取 store 中所有的商品 id
            const idArr = [];
            console.log("this.$store.state.cart", this.$store.state.cart);
            this.$store.state.cart.forEach(item => idArr.push(item.id));
            if(idArr.length < 1) {
                return;
            }
            this.$axios.post("/book/getShopCartList", { ids: idArr.join(",")}).then(res => {
                console.log("res", res);
                if (res.data.code === "200") {
                    this.bookList = res.data.data;
                }
            }).catch(err => {
                console.error("get shop cart list error:", err);
            })
        },
        remove(id, index) {
            // 点击删除，把商品从 store 中根据传递的Id删除，同时，把当前组件中的bookList，对应要删除的那个商品使用 index 来删除
            this.bookList.splice(index, 1);
            this.$store.commit("removeCartByID", id);
        },
        selectedChanged(id, val) {
            // 每当点击开关，把最新的 快关状态，同步到 store 中
            this.$store.commit("updateCartSelected", {id, selected: val});
        }
    },
}
</script>


<style lang="scss" scoped>
.shopcar-container {
    background-color: #eee;
    overflow: hidden;
    .goods-list {
        .mui-card-content-inner {
            display: flex;
            align-items: center;
        }
        img {
            width: 60px;
        }
        h1 {
            font-size: 13px;
        }
        .info {
            display: flex;
            flex-direction: column;
            justify-content: space-between;
            .price {
                color: red;
                font-weight: bold;
            }
        }
    }
    .jiesuan {
        display: flex;
        justify-content: space-between;
        align-items: center;
        .red {
            color: red;
            font-weight: bold;
            font-size: 16px;
        }
    }
}
</style>
